namespace Test.ConsoleProgram.Algorithm.Solution
{
    [TestDescription("算法: 0153. 寻找旋转排序数组中的最小值")]
    public class No0153_FindMin : AbsBaseTestItem
    {
        /*
        假设按照升序排序的数组在预先未知的某个点上进行了旋转。
        ( 例如，数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
        请找出其中最小的元素。
        你可以假设数组中不存在重复元素。
        */

        public override void OnTest()
        {
            Assert.TestExe(FindMin, new int[] { 3, 4, 5, 1, 2 }, 1);
            Assert.TestExe(FindMin, new int[] { 4, 5, 6, 7, 0, 1, 2 }, 0);
        }

        public int FindMin(int[] nums)
        {
            int minNum = int.MaxValue;
            for (int i = nums.Length - 1; i >= 0; i--)
            {
                int itemNum = nums[i];
                if (itemNum <= minNum)
                {
                    minNum = itemNum;
                    continue;
                }
                return minNum;
            }
            return minNum;
        }
    }
}
